const PKCS7Padding = {
    /**
     * 删除补位
     * @param {String} text 解密后的明文
     */
    decode(text, blockSize) {
        //
        let pad = text[text.length - 1];
        if (pad < 1 || pad > blockSize) {
            pad = 0;
        }
        // 检查填充字节是否全部相同
        for (let i = 1; i <= pad; i++) {
            if (text[text.length - i] !== pad) {
                return text; // 如果发现不一致，认为没有进行填充
            }
        }

        return text.slice(0, text.length - pad);
    },
    /**
     * 填充补位
     * @param {String} text 需要进行填充补位的明文
     */
    encode(text, blockSize) {
        const textLength = text.length;
        // 计算需要填充的位数
        const amountToPad = blockSize - (textLength % blockSize);
        const result = Buffer.alloc(amountToPad);
        result.fill(amountToPad);
        return Buffer.concat([text, result]);
    },
};

module.exports = {
    PKCS7Padding,
};
